package br.com.dufs.mvc.controller;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.transaction.SystemException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.com.dufs.mvc.model.Cultura;
import br.com.dufs.mvc.model.Entrevistado;
import br.com.dufs.mvc.model.ExtrativismoVegetal;
import br.com.dufs.mvc.service.CulturaBOService;
import br.com.dufs.mvc.service.EntrevistadoBOService;
import br.com.dufs.mvc.service.ExtrativismoVegetalBOService;

import com.fscoreunipe.app.util.formato.NumeroUtil;

@Controller
@Scope("view")
public class CulturaExtrativismoMB {

	private String valorStr;
	private int qntCultura;
	private int qntExtartivismo;
	private double totalCultura;
	private double totalExtartivismo;

	private Cultura cultura;
	private DataModel<Cultura> listaCulturas;
	private ExtrativismoVegetal extrativismoVegetal;
	private DataModel<ExtrativismoVegetal> listaExtrativismoVegetal;

	private Entrevistado entrevistado;

	@Autowired
	protected EntrevistadoBOService entrevistadoBO;
	@Autowired
	protected CulturaBOService culturaBO;
	@Autowired
	protected ExtrativismoVegetalBOService extrativismoBO;

	@PostConstruct
	public void filmeSelecionado() throws SystemException {
		String id = (String) FacesContext.getCurrentInstance()
				.getExternalContext().getRequestParameterMap().get("id");

		if (id != null)
			this.entrevistado = entrevistadoBO.pesquisarPorId(id);
		valorStr = null;
		cultura = new Cultura();
		extrativismoVegetal = new ExtrativismoVegetal();

	}

	public String getValorStr() {
		return valorStr;
	}

	public void setValorStr(String valorStr) {
		this.valorStr = valorStr;
	}

	public int getQntCultura() {
		return qntCultura;
	}

	public void setQntCultura(int qntCultura) {
		this.qntCultura = qntCultura;
	}

	public int getQntExtartivismo() {
		return qntExtartivismo;
	}

	public void setQntExtartivismo(int qntExtartivismo) {
		this.qntExtartivismo = qntExtartivismo;
	}

	public double getTotalCultura() {
		return totalCultura;
	}

	public void setTotalCultura(double totalCultura) {
		this.totalCultura = totalCultura;
	}

	public double getTotalExtartivismo() {
		return totalExtartivismo;
	}

	public void setTotalExtartivismo(double totalExtartivismo) {
		this.totalExtartivismo = totalExtartivismo;
	}

	public Cultura getCultura() {
		return cultura;
	}

	public void setCultura(Cultura cultura) {
		this.cultura = cultura;
	}

	public DataModel<Cultura> getListaCulturas() {
		List<Cultura> lista = culturaBO.listaPorCPF(entrevistado.getCpf());
		listaCulturas = new ListDataModel<Cultura>(lista);
		return listaCulturas;
	}

	public void setListaCulturas(DataModel<Cultura> listaCulturas) {
		this.listaCulturas = listaCulturas;
	}

	public ExtrativismoVegetal getExtrativismoVegetal() {
		return extrativismoVegetal;
	}

	public void setExtrativismoVegetal(ExtrativismoVegetal extrativismoVegetal) {
		this.extrativismoVegetal = extrativismoVegetal;
	}

	public DataModel<ExtrativismoVegetal> getListaExtrativismoVegetal() {
		List<ExtrativismoVegetal> lista = extrativismoBO
				.listaPorCPF(entrevistado.getCpf());
		listaExtrativismoVegetal = new ListDataModel<ExtrativismoVegetal>(lista);
		return listaExtrativismoVegetal;
	}

	public void setListaExtrativismoVegetal(
			DataModel<ExtrativismoVegetal> listaExtrativismoVegetal) {
		this.listaExtrativismoVegetal = listaExtrativismoVegetal;
	}

	public Entrevistado getEntrevistado() {
		return entrevistado;
	}

	public void setEntrevistado(Entrevistado entrevistado) {
		this.entrevistado = entrevistado;
	}

	public void excluirCultura() {
		Cultura xTemp = (Cultura) (this.listaCulturas.getRowData());
		culturaBO.excluir(xTemp);
	}

	public void addCultura() throws Exception {

		cultura.setValorUnit(NumeroUtil.converterDouble(valorStr));
		cultura.setValorTotal(cultura.getProdEstimada()
				* cultura.getValorUnit());
		cultura.setEntrevistado(entrevistado);
		culturaBO.salvar(cultura);
		cultura = null;
		cultura = new Cultura();
		valorStr = null;
		getListaCulturas();
	}

	public void excluirExtrativismoVegetal() {
		ExtrativismoVegetal xTemp = (ExtrativismoVegetal) (this.listaExtrativismoVegetal
				.getRowData());
		extrativismoBO.excluir(xTemp);
	}

	public void addExtrativismoVegetal() throws Exception {

		extrativismoVegetal.setValorUnit(NumeroUtil.converterDouble(valorStr));
		extrativismoVegetal.setValorTotal(cultura.getProdEstimada()
				* cultura.getValorUnit());
		extrativismoVegetal.setEntrevistado(entrevistado);
		extrativismoBO.salvar(extrativismoVegetal);
		extrativismoVegetal = null;
		extrativismoVegetal = new ExtrativismoVegetal();
		valorStr = null;
		getListaExtrativismoVegetal();
	}

}
